package com.aidex.system.domain;

import com.aidex.common.annotation.Excel;
import com.aidex.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
 * 运单管理对象 waybill
 * @author jmy
 * @email jmyinjg@163.com
 * @date 2021-10-04
 */
@Data
public class Waybill extends BaseEntity<Waybill>
{
    private static final long serialVersionUID = 1L;

    /** 运单号 */
    @Excel(name = "运单号")
    @NotBlank(message = "运单号不允许为空")
    private String waybillNo;

    /** 运单来源 */
    @Excel(name = "运单来源")
    @NotBlank(message = "运单来源不允许为空")
    private String dataSource;

    /** 航班号 */
    @Excel(name = "航班号")
    @NotBlank(message = "航班号不允许为空")
    private String flightNo;

    /** 航班类型 */
    @Excel(name = "航班类型")
    @NotBlank(message = "航班类型不允许为空")
    private String flightType;

    /** 航班日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "航班日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date flightDate;

    /** 航班日期开始 */
    private String beginFlightDate;

    /** 航班日期结束 */
    private String endFlightDate;
    /** 销售代理人名称 */
    @Excel(name = "销售代理人名称")
    private String organization;

    /** 交货或发货代理人编码 */
    @Excel(name = "交货或发货代理人编码")
    @NotBlank(message = "交货或发货代理人编码不允许为空")
    private String agentCode;

    /** 品名 */
    @NotBlank(message = "品名不允许为空")
    private String goodsName;

    /** 货物性质 */
    private String goodsType;

    /** 特货代码 */
    private String specialGoodsCode;

    /** 差异化备案产品序号 */
    private String diffProductSn;

    /** 报检员 */
    private String shipper;

    /** 始发站机场三字码 */
    private String origin;

    /** 目的站机场三字码 */
    private String destination;

    /** 承运人代码 */
    private String carrierCode;

    /** 重点航班标识 Y 是 N 不是 */
    private String isImportantFlights;

    /** 代理人信用等级 A\B\C\D */
    @NotBlank(message = "代理人信用等级 ABCD不允许为空")
    private String agentLevel;

    /** 货物风险等级分类 高风险\低风险\普通 */
    private String riskClassification;

    /** 综合风险等级评估 低风险\优先\普通\高风险\严控 */
    private String riskRating;

    /** 是否已处理 0 未处理 1 已处理 */
    private Integer status;

    public void setWaybillNo(String waybillNo) 
    {
        this.waybillNo = waybillNo;
    }

    public String getWaybillNo() 
    {
        return waybillNo;
    }

    public void setDataSource(String dataSource) 
    {
        this.dataSource = dataSource;
    }

    public String getDataSource() 
    {
        return dataSource;
    }

    public void setFlightNo(String flightNo) 
    {
        this.flightNo = flightNo;
    }

    public String getFlightNo() 
    {
        return flightNo;
    }

    public void setFlightType(String flightType) 
    {
        this.flightType = flightType;
    }

    public String getFlightType() 
    {
        return flightType;
    }

    public void setFlightDate(Date flightDate) 
    {
        this.flightDate = flightDate;
    }

    public Date getFlightDate() 
    {
        return flightDate;
    }

    public void setOrganization(String organization) 
    {
        this.organization = organization;
    }

    public String getOrganization() 
    {
        return organization;
    }

    public void setAgentCode(String agentCode) 
    {
        this.agentCode = agentCode;
    }

    public String getAgentCode() 
    {
        return agentCode;
    }

    public void setGoodsName(String goodsName) 
    {
        this.goodsName = goodsName;
    }

    public String getGoodsName() 
    {
        return goodsName;
    }

    public void setGoodsType(String goodsType) 
    {
        this.goodsType = goodsType;
    }

    public String getGoodsType() 
    {
        return goodsType;
    }

    public void setSpecialGoodsCode(String specialGoodsCode) 
    {
        this.specialGoodsCode = specialGoodsCode;
    }

    public String getSpecialGoodsCode() 
    {
        return specialGoodsCode;
    }

    public void setDiffProductSn(String diffProductSn) 
    {
        this.diffProductSn = diffProductSn;
    }

    public String getDiffProductSn() 
    {
        return diffProductSn;
    }

    public void setShipper(String shipper) 
    {
        this.shipper = shipper;
    }

    public String getShipper() 
    {
        return shipper;
    }

    public void setOrigin(String origin) 
    {
        this.origin = origin;
    }

    public String getOrigin() 
    {
        return origin;
    }

    public void setDestination(String destination) 
    {
        this.destination = destination;
    }

    public String getDestination() 
    {
        return destination;
    }

    public void setCarrierCode(String carrierCode) 
    {
        this.carrierCode = carrierCode;
    }

    public String getCarrierCode() 
    {
        return carrierCode;
    }

    public void setIsImportantFlights(String isImportantFlights) 
    {
        this.isImportantFlights = isImportantFlights;
    }

    public String getIsImportantFlights() 
    {
        return isImportantFlights;
    }

    public void setAgentLevel(String agentLevel) 
    {
        this.agentLevel = agentLevel;
    }

    public String getAgentLevel() 
    {
        return agentLevel;
    }

    public void setRiskClassification(String riskClassification) 
    {
        this.riskClassification = riskClassification;
    }

    public String getRiskClassification() 
    {
        return riskClassification;
    }

    public void setRiskRating(String riskRating) 
    {
        this.riskRating = riskRating;
    }

    public String getRiskRating() 
    {
        return riskRating;
    }

    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("waybillNo", getWaybillNo())
            .append("dataSource", getDataSource())
            .append("flightNo", getFlightNo())
            .append("flightType", getFlightType())
            .append("flightDate", getFlightDate())
            .append("organization", getOrganization())
            .append("agentCode", getAgentCode())
            .append("goodsName", getGoodsName())
            .append("goodsType", getGoodsType())
            .append("specialGoodsCode", getSpecialGoodsCode())
            .append("diffProductSn", getDiffProductSn())
            .append("shipper", getShipper())
            .append("origin", getOrigin())
            .append("destination", getDestination())
            .append("carrierCode", getCarrierCode())
            .append("isImportantFlights", getIsImportantFlights())
            .append("agentLevel", getAgentLevel())
            .append("riskClassification", getRiskClassification())
            .append("riskRating", getRiskRating())
            .append("status", getStatus())
            .append("id", getId())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
